package oc1519

import (
	"fmt"
	"testCOM/oc1519/define"
	"testCOM/oc1519/helper"
)

//解析协议数据
func DecodeProto(data []byte, cmd string) {
	switch cmd {
	case "status":
		DeGetStatus(data)
		break
	case "setControl":

		break
	default:

	}
}

//组包协议数据
func EncodeProto(cmd string, add int, data *[]byte) {
	switch cmd {
	case "status":
		err := GetStatus(add, data)
		if err != nil {
			fmt.Printf("oc1519 status create fail:%s\n", err.Error())
			return
		}
		break
	default:
		fmt.Printf("oc1519 ProtoCmd:%s not support\n", cmd)
		return
	}
}

//取状态
func GetStatus(add int, data *[]byte) error {
	*data = append(*data, byte(add), define.FUNCTION_CODE_READ_ONE_OR_MORE, 0x00, 0x00, 0x00, 0x0F)
	*data = append(*data, helper.CRC16ModBus(*data)...)
	return nil
}

//解析取状态
func DeGetStatus(data []byte) error {
	//if data[2] == byte(define.CMD_GET_STATUS) && len(data) > 11 {
	//	fmt.Printf("【<<<收到mdc485取状态结果】：")
	//	fmt.Printf("\n\t记录标识符[0x%02x]:", data[3])
	//	if data[3] == 0 {
	//		fmt.Printf("无记录")
	//	} else {
	//		if data[3]&0x08 == 0x08 {
	//			fmt.Printf(" 刷卡记录")
	//		}
	//		if data[3]&0x10 == 0x10 {
	//			fmt.Printf(" 报警记录")
	//		}
	//		if data[3]&0x20 == 0x20 {
	//			fmt.Printf(" 卡状态记录")
	//		}
	//	}
	//	fmt.Printf("\n\t门开关状态[0x%02x]: %v", data[5], strconv.FormatInt(int64(data[5]), 2))
	//	fmt.Printf("\n\t继电器状态[0x%02x]: %v", data[6], strconv.FormatInt(int64(data[6]), 2))
	//	fmt.Printf("\n\t控制器版本[0x%02x]: %d", data[7], data[7])
	//	fmt.Printf("\n\tOEM代码[0x%02x%02x]: %d", data[8], data[9], ((int(data[8]) << 8) + int(data[9])))
	//	fmt.Printf("\n\t功能控制位[0x%02x]:", data[10])
	//	if data[10]&0x01 == 0x01 {
	//		fmt.Printf(" 截止日期")
	//	}
	//	if data[10]&0x02 == 0x02 {
	//		fmt.Printf(" OEM专属")
	//	}
	//	if data[10]&0x04 == 0x04 {
	//		fmt.Printf(" 卡携带姓名")
	//	}
	//	if data[10]&0x10 == 0x10 {
	//		fmt.Printf(" 4字节密码")
	//	}
	//	fmt.Printf("\n")
	//}
	return nil
}
